Networks of IP type are based on a grid of interconnected nodes which perform data packet routings, called routers. Such a network is generally exposed to delays, jitter and packet losses, which result from the resources of the routers not being infinite and from the traffic possibly being subject to heavy variations in load. In particular, routers have their capacities restricted by the sizes of FIFO (standing for First In, First Out) memories and the durations of the various processings, such as in particular address resolutions, error corrections and/or retransmissions, checksums and management of network administration protocols (updates of routing tables, quality of service, multicast groups, etc). The resources of the routers are also affected by faults, the existence of which is all the more probable when the number of nodes of the network is high and when the latter is used over a long period.
Another penalizing consequence of this situation is that the applications that use the network employ a bandwidth that turns out to be both limited and highly variable.
Data losses may be partially corrected by verification mechanisms with automatic repetition of errored messages, also called “ARQ” (standing for “Automatic Repeat and Request”), or by adding error correction codes such as in particular error correction codes with no return path, called “FEC” codes (standing for Forward Error Correction). However, these techniques themselves introduce extra delays, further decreasing the available bandwidth.
These difficulties have led to two types of developments, one type pertaining to the sharing of resources between users, and the other type relating to the adaptation of each transmitter to the bandwidth available over time.
As far as the first point is concerned, to be able to equitably share the resources of the network (bandwidth per user) while also limiting packet losses as far as possible, users must follow “fairness” rules. In particular, they must use protocols complying with the principle designated by “AIMD” (Additive Increase, Multiplicative Decrease). According to the latter, a transmitter of content over the network must slowly and linearly raise (at constant stepsize) his sending throughput so long as his estimation of the state of the network so permits, by taking account of the parameters such as: estimation of the value of a loss rate, outward/return duration (or “RTT” standing for “Round Time Trip”), useful throughput (or “goodput”), etc. On the other hand, he must drastically reduce his sending throughput (“Multiplicative Decrease”) as soon as a loss has been detected.
The AIMD principle for IP network is integrated into the TCP (standing for “Transmission Control Protocol”) communication protocol. However, using a system for acknowledging and retransmitting lost packets, it is generally considered to be unsuited to the transport of audiovisual streams, since it introduces unacceptable delays and does not allow the multicast mode. This is why, for transmission as a continuous stream (streaming), the combined utilization of RTP (standing for “Real Time Transport Protocol”) and UDP (standing for “User Datagram Protocol”) protocols is preferred to it. However, this involves building an AIMD system onto this transmission technique. In particular, one speaks of “TCP-friendly” regulation (that is to say equitable with respect to TCP) when the throughput used is not larger than that which would have been used by a TCP source under similar conditions.
As far as the second type of developments made to take account of the difficulties of communication over network is concerned, there are traditionally two ways of adapting a video stream to the available bandwidth. The first consists in using a real time coder with an efficient regulation module. It is thus possible to generate on the fly a video stream complying with a throughput preset.
However, such encoders are generally less efficient than so-called “off-line” encoders (non real time). Specifically, the latter may be put in place with coding algorithms capable of employing the desired complexity (since they are not constrained by time) and therefore be much more efficient (better quality of decoded images for the same throughput). The coding algorithms may consist for example of a multipass mode (multipass coding) or of a choice of the type of coding for each block. For similar reasons, an “off-line” coder often complies better with the throughput presets.
The second traditional way of adapting a video stream to the available bandwidth consists in generating a set of streams of the same video, that are coded at different throughputs. The video server then selectively transmits one stream rather than another as a function of a desired throughput preset. As indicated previously, the “off-line” streams possibly being of better quality than the “real timer” streams, this mode of transmission generally affords a better quality of service for the customer.
It is possible to distinguish essentially two branches for the practice of procedures of this type. According to a direct selective transmission technique, called “simulcast” or “stream switching”, several versions of one and the same sequence are encoded directly at different throughputs. During a transmission and as a function of the available bandwidth of the connection, one stream rather than another is then dispatched. For example, we have three streams encoded at constant bit rates (CBR mode standing for “Constant Bit Rate” mode), associated respectively with three different throughputs. If at a given instant the second stream is transmitted and packet losses appear, then we switch automatically to the first stream, of lower throughput. If conversely the bandwidth available becomes large enough, we can switch to the third stream, of higher throughput.
According to a second technique of selective transmission, by hierarchization or “scalability”, a base layer and one or more extra enhancement layers are provided. These extra layers make it possible to increase the quality of transmission and/or the temporal and/or spatial resolution. Depending on the availability of bandwidth, one or more enhancement layers are thus added to the base layer.
In the industry, it is observed that the various video coding standards of recent years, such as H263, MPEG2 and MPEG4 (standing for “Moving Picture Experts Group”) or AVC (standing for “Advanced Video Coding”), are of growing complexity and that the first implementations of associated coders are “off-line”. Moreover, even after several years and despite the ever growing power of computers, “off-line” coders still remain substantially better than “real time” coders. The simulcast and hierarchization techniques are therefore particularly beneficial for taking efficient account of the bandwidth availability.
However, they have the drawback, in their generic form, of violating the AIMD principle of progressive increase of throughput. Specifically, the disparity between two simulcast streams or corresponding to the addition of a hierarchization layer produces throughput augmentation tiers, during bandwidth availability phases. These disparities are the larger when the number of streams envisaged (encoding according to several throughputs or with enhancement layers) is relatively restricted. Specifically, in practice, the sequences are encoded only a reduced number of times, or only a reduced number of layers is envisaged, in the interests of saving memory space and processing, and for simplicity of management and of implementation.
Moreover, in case of congestion (loss of packets), the switching from one stream to another of lesser throughput requires specific processing operations on the part of the server. During this time, the customer receives a degraded stream.
Certain other “off-line” stream procedures make it possible to assuage these problems. Thus, the technique of fine hierarchization or FGS (standing for “Fine Grain Scalability”) allows real-time adjustment of the throughput of the stream sent by truncating the upper enhancement layer. However, this technique turns out to offer a rather reduced effectiveness of coding as compared with the generic techniques of selective transmission.
The technique of sub-band coding also relies on a truncation of an enhancement layer and turns out to be rather efficient. However, it involves a level of complexity greater than that required for the coding algorithms customarily used (based on DCT procedures, standing for “Discrete Cosinus Transforms”).
In order to remedy the problems of throughput jumps of the simulcast and hierarchization techniques, a person skilled in the art could be tempted to multiply up the number of streams envisaged (that is to say of versions of different throughputs in the simulcast technique or of layers in the hierarchization technique). Thus, the disparities in throughput between two successive entities could be reduced accordingly. However, such a solution turns out to be very expensive in terms of necessary storage and in terms of stream management, all the more so as it makes it possible to get nearer to the AIMD principle of progressive increase of throughput.